/** @method useVariableData
 *  @description 取可选的数据
 *  @param {Array} limitType
 *  @param {String} appId 应用id
 *  @param {String} eventId 事件id
 *  @param {String} eventId 事件id
 *  @param {Object} codes 码表
 *  @return Object
 */

import React, { useState, useMemo } from 'react';
import services from '../services/api';
import Literal from '../components/PopTab/Literal';
import Feature from '../components/PopTab/Feature';
import { VARIABLE_TYPE } from 'src/utils/constant';
import storage from 'src/utils/storage';
import useDataSourceData from './useDataSourceData';

export default function useVariableData({ limitType, projectCode, appId, eventId, codes, reloadKey }) {
  const [field, setField] = useState([]);
  const [feature, setFeature] = useState([]);
  const [model, setModel] = useState([]);
  const [nameList, setNameList] = useState([]); // 本地名单
  const [thirdNameList, setThirdNameList] = useState([]); // 第三方名单
  const [strategy, setStrategy] = useState([]); // 策略
  const [riskLevel, setRiskLevel] = useState([]); // 风险等级
  const dataSourceData = useDataSourceData().varData;

  const orgCode = storage.org.code;

  useMemo(() => {
    // if (!eventId || !appId) {
    //   return;
    // }

    // 如果limitType中有field类型，则请求字段接口
    if (limitType.includes(VARIABLE_TYPE._FIELD)) {
      getField(projectCode);
    }

    // // 如果limitType中有feature类型，则请求指标接口
    // if (limitType.includes('feature')) {
    //   getFeature(appId);
    // }

    // // 如果limitType中有model类型，则请求model接口
    // if (limitType.includes(VARIABLE_TYPE._MODEL)) {
    //   getModel(appId, eventId);
    // }

    // // 如果limitType中有nameList类型，则请求nameList接口
    // if (limitType.includes(VARIABLE_TYPE._NAMELIST)) {
    //   getNameList(appId, eventId);
    // }

    // // 如果limitType中有第三方映射类型，则请求第三方映射类型
    // if (limitType.includes(VARIABLE_TYPE._THIRD_FEATURE)) {
    //   getThirdNameList(appId, eventId);
    // }

    // // 如果limitType中有strategy类型，则请求策略组件接口
    // if (limitType.includes(VARIABLE_TYPE._STRATEGY)) {
    //   getStrategyComponent(eventId);
    // }

    // // 如果limitType中有risk_level类型，则请求risk_level接口
    // if (limitType.includes(VARIABLE_TYPE._RISK_LEVEL)) {
    //   getRiskLevel();
    // }
  }, [eventId, reloadKey, projectCode]);

  // 获取变量
  function getField(projectCode) {
    if (projectCode) {
      services.vars
        .listNoPage({
          projectCode,
          orgCode,
        })
        .then((res) => {
          if (res.code === '0') {
            setField(res.data);
          } else {
            setField([]);
          }
        });
    }
  }

  // // 获取指标
  // function getFeature(app_id) {
  //   services.indicator
  //     .getVariableList({
  //       app_id,
  //     })
  //     .then((res) => {
  //       setFeature(res.data);
  //     });
  // }

  // // 获取模型
  // function getModel(app_id, event_id) {
  //   services.model
  //     .strategyModel({
  //       app_id,
  //       event_id,
  //     })
  //     .then((res) => {
  //       setModel(res.data);
  //     });
  // }

  // // 获取名单
  // function getNameList(app_id, event_id) {
  //   services.nameList
  //     .variableList({
  //       app_id,
  //       event_id,
  //     })
  //     .then((res) => {
  //       setNameList(res.data);
  //     });
  // }

  // // 获取第三方名单
  // function getThirdNameList(app_id, event_id) {
  //   services.nameList
  //     .variableListThird({
  //       app_id,
  //       event_id,
  //     })
  //     .then((res) => {
  //       setThirdNameList(res.data);
  //     });
  // }

  // // 获取策略组件(启用状态)
  // function getStrategyComponent(event_id) {
  //   services.strategyComponent
  //     .all({
  //       current_support: 1,
  //       event_id,
  //       status: 1,
  //     })
  //     .then((res) => {
  //       setStrategy(res.data);
  //     });
  // }

  // // 获取风险等级
  // function getRiskLevel() {
  //   const risk_level = codes
  //     ? codes.risk_level &&
  //     codes.risk_level.map((item) => {
  //       item.name = item.value;
  //       return item;
  //     })
  //     : []; // 风险等级
  //   setRiskLevel(risk_level);
  // }

  function getAllData() {
    const allData = {};
    if (limitType.includes(VARIABLE_TYPE._FIELD)) {
      allData[VARIABLE_TYPE._FIELD] = field;
    }
    if (limitType.includes(VARIABLE_TYPE._FEATURE)) {
      allData[VARIABLE_TYPE._FEATURE_ALL] = feature;
      allData[VARIABLE_TYPE._FEATURE] = <Feature app_id={appId} />;
    }
    if (limitType.includes(VARIABLE_TYPE._MODEL)) {
      allData[VARIABLE_TYPE._MODEL] = model;
    }
    if (limitType.includes(VARIABLE_TYPE._NAMELIST)) {
      allData[VARIABLE_TYPE._NAMELIST] = nameList;
    }
    if (limitType.includes(VARIABLE_TYPE._THIRD_FEATURE)) {
      allData[VARIABLE_TYPE._THIRD_FEATURE] = thirdNameList;
    }
    if (limitType.includes(VARIABLE_TYPE._STRATEGY)) {
      allData[VARIABLE_TYPE._STRATEGY] = strategy;
    }
    if (limitType.includes(VARIABLE_TYPE._RISK_LEVEL)) {
      allData[VARIABLE_TYPE._RISK_LEVEL] = riskLevel;
    }
    // 如果limitType中有literal类型，
    if (limitType.includes(VARIABLE_TYPE._LITERAL)) {
      allData[VARIABLE_TYPE._LITERAL] = <Literal />;
    }
    return { ...allData, ...dataSourceData };
  }

  return getAllData();
}
